﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanCafe.QuanCafe_BUS_WebService;


namespace QuanCafe
{
    public partial class frmDoiMatKhau : Form
    {
        // tạo biến webservice
        QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();

        // tạo biến để kiểm tra tài khoản
        private string _taikhoan;

        // khởi tạo với tham số cho trước
        public frmDoiMatKhau(String taikhoan)
        {
            InitializeComponent();
            _taikhoan = taikhoan;

            // khai báo các sự kiện
            uscDoiMatKhau.doiMatKhau_DongY += new ucDoiMatKhau.DoiMatKhau_DongYHandle(ChapNhanDoiMatKhau);
            uscDoiMatKhau.doiMatKhau_huyBo += new ucDoiMatKhau.DoiMatKhau_HuyBoHandle(HuyBoDoiMatKhau);

        }

        #region Viết hàm cho các sự kiện của frmDoiMatKhau

        // hàm đồng ý đổi mật khẩu
        void ChapNhanDoiMatKhau()
        { 
            // kiểm tra điều kiện của thông tin nhập vào
            try
            {
                // đầu tiên, kiểm tra dữ liệu nhập vào có đúng chưa
                if (uscDoiMatKhau.Matkhaucu.Length == 0)
                {
                    // xuất ra thông báo
                    MessageBox.Show("Bạn chưa nhập vào mật khẩu cũ!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else
                {
                    if (uscDoiMatKhau.Matkhaumoi.Length == 0)
                    {
                        // xuất ra thông báo
                        MessageBox.Show("Bạn chưa nhập vào mật khẩu mới!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    {
                        if (uscDoiMatKhau.Nhaplaimatkhaumoi.Length == 0)
                        {
                            // xuất ra thông báo
                            MessageBox.Show("Bạn chưa nhập lại mật khẩu mới!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                        else
                        {
                            if (uscDoiMatKhau.Matkhaumoi != uscDoiMatKhau.Nhaplaimatkhaumoi)
                            {
                                // xuất ra thông báo
                                MessageBox.Show("Mật khẩu mới nhập lại không chính xác!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                return;
                            }
                            else
                            {
                                // kiểm tra thông tin nhập vào có thỏa dkien ko
                                // Dk: số kí tự >=6 và <=30 + ko chứa các kí tự đặc biệt
                                if (CheckPass(uscDoiMatKhau.Matkhaucu, uscDoiMatKhau.Matkhaumoi) == true) // xác nhận
                                {
                                    // xử lý việc đổi mật khẩu ở đây => gọi webservice làm => nhận và trả kết quả về
                                    bool flag = ws.NV_CapNhatMatKhauThanhCong(_taikhoan, uscDoiMatKhau.Matkhaucu, uscDoiMatKhau.Matkhaumoi);
                                    if (flag == true)
                                    {
                                        //sau đó, hiện thông báo
                                        MessageBox.Show("Bạn đã đổi mật khẩu thành công!", "Congratulation!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                        this.Close();
                                    }
                                    else
                                    {
                                        //sau đó, hiện thông báo
                                        MessageBox.Show("Mật khẩu nhập vào không chính xác","Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                }
                                else
                                {
                                    // xuất thông báo
                                    MessageBox.Show("Mật khẩu không hợp lệ!\n " +
                                                    "Điều kiện: số kí tự >= 6 và <= 30\n" +
                                                     " và không chứa các kí tự đặc biệt!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                }
                            }
                        }
                            
                    }
                }
            }
            catch (Exception e)
            { 
                // quăng lỗi
                MessageBox.Show("Lỗi: " + e);
            }

        }


        // hủy bỏ việc đổi mật khẩu
        void HuyBoDoiMatKhau()
        { 
            //đóng form lại
            this.Close();
        }

        // viết hàm kiểm tra tài khoản nhập vào có thỏa điều kiện đăng kí ko => cái này có lẽ nên bỏ trên service
        public bool CheckPass(string name, string pass)
        {
            bool check = true;
            // kiểm tra tên
            for (int k = 0; k < name.Length; k++)
            {
                if (!(name[k] >= '0' && name[k] <= '9'
                    || name[k] >= 'A' && name[k] <= 'Z'
                    || name[k] >= 'a' && name[k] <= 'z') || name.Length > 30 || name.Length < 6)
                {
                    check = false;
                    break;
                }
            }
            // kiểm tra pass

            for (int i = 0; i < pass.Length; i++)
            {
                if (!(pass[i] >= '0' && pass[i] <= '9'
                    || pass[i] >= 'A' && pass[i] <= 'Z'
                    || pass[i] >= 'a' && pass[i] <= 'z') || pass.Length > 30 || pass.Length < 6)
                {
                    check = false;
                    break;
                }
            }

            return check;
        }



        #endregion


    }
}
